iT邦幫忙

2023 iThome 鐵人賽

DAY 1
0

前言: React Native 是什麼?

React Native 是一個臉書開發、建構在 React 之上的 JS 函式庫,最大的好處就是能用「類似網站開發的方式來製作 App 」。若你和我一樣是個網頁工程師,卻因故需要開發 App ,比起從頭學習 App 原生語法(別忘了 Android 和 iOS 使用的語言還不同喔), React Native 絕對會是更平易近人的選項。

React Native 會將我們所寫的 JS ,轉換成原生程式碼,並提供 iOS 與 Android 原生支援的 JavaScript 元件,讓我們能打造出和原生語言大同小異的 App。如同他們所主打的標語「 Learn once, write anywhere 」,只要學會了,就能一次完成雙平台 App 的開發與維護。

你可能會問,那有哪些 App 實際用了 React Native 來開發呢?根據 React Native 官網所寫,當然臉書本身的 App 就不用說了, Skype 、 Microsoft Teams 、 Discord 、 Pinterest 等都用了 React Native 來開發(截至 2023 年 9 月為止)。

Expo? React Native?

剛接觸 React Native 時,可能會先被 Expo 和 React Native 的關係、差異,和要用哪個搞得暈頭轉向。

簡單來說, Expo 是一個開源框架。雖然 React Native 已經幫助網頁工程師能夠用更簡單的方式進入開發 App 的世界,但是依然有很多需要自己處理的,若使用 Expo ,他會直接幫你處理好,讓你少走一些泥巴路。

那到底該怎麼選擇呢?其實第一年寫 App 專案,我也是直接使用 Expo ,原因很現實,當時接手的半成品專案就是 Expo 。事實的確證明 Expo 比較好入門,直到後來因專案需求,才促使我們把專案從 Expo 轉換成純 React Native 。

而轉換過程又是一個潛藏的地雷。雖然 Expo 有提供 eject expo 這個指令,但因為 Expo 和直接使用純粹的 React Native ,在資料架構上還是有差異, Expo 的資料夾相對單純很多。轉換後除了需要再次學習那些額外多出來的知識點,若專案已經進行到一半,並且不幸暗藏一些問題,也會需要重新整合。

若單純以學習來說,我覺得直接學習 React Native ,其實也未嘗不可。這系列的文章將專注在 React Native 本身上,若對於 Expo 有興趣的讀者,推薦這系列教學給你:Expo --- 跨平台 App 開發從零到上架

學習前的準備

  • React :要講 React Native ,就一定會不斷提到 React 裡的知識點。如果你本身已經是 React 的使用者會輕鬆很多,如果不是的話也沒關係,我會用補充的方式把需要的知識點交代清楚。當然你也可以先把 React 學個大概,再來閱讀這系列的文章。去年鐵人賽我有製作一系列的影片教學: 150 分鐘學 React ,趁機在這裡宣傳一下。
  • Mac :如果你想要用純 React Native 開發 iOS ,必須要使用 Mac 才能開啟 XCode 。
  • iOS 裝置:如果你開發的 iOS App ,需要開發到遠端推播這個功能,就得有一隻 iOS 的裝置,例如 iPhone ,因為電腦裡的 iOS 手機模擬器只能收到本地端的推播。至於什麼是遠端推播、什麼是本地端推播,之後會再介紹。

為什麼要做這個題目?

最後,想說明我做這個題目的原因。

在人力銀行的職缺中, React Native 工程師的職位其實不算少。不過中文教學卻蠻少的,資料零零散散,好不容易找到,結果內容這段跟下段一下子跳的太快。

在我剛接手 React Native 專案時,對於 React 、 React Native 的認識都是零。一開始因為沒有完整學習(也因為太龐大,不知道從何學起),卻又很著急想趕快把專案做起來,碰到一個東西做不出來只想趕快在網路上搜尋解法。偏偏有的人用 Expo 回答,有的人用純 React Native ;有的解答用 Functional Component 寫,有的又用 Class Component 寫。不只如此,這些解答為了快速說出重點,不會貼完整的段落。對於三腳貓的我來說非常困惑,也察覺到自己必須好好完整的學習,才不會連自己在寫什麼都不知道。

透過 Youtube 我找到一系列不錯的影片,跟隨他的建議先從 React 學起,專案部分則是逐步調整。慢慢的整個 App 不但順利完成,上架雙平台,專案也被整理得乾淨許多,目前已經發展到第二年。

不論你是突然被叫去寫 App 的網頁前端工程師,或是單純對 React Native 有興趣,都希望我能盡可能的幫助到你。另外不免俗還是要說,我會盡可能提供正確的資訊,但是如果文章裡頭真的有我個人對知識點理解錯誤,或是有更好的解法,甚至是沒講到重點的,都希望大家能不吝提出。


下一篇
Day 02. 開發事前準備 Android
系列文
即使明天老闆突然叫你用 React Native 也可以跟他說好沒問題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言